package org.example.offical.doc.tool;

/**
 * 为了增加LLM使用正确参数调用正确工具的机会，我们应该提供一个清晰明确的
 * - 工具名称
 * - 描述工具的作用和应何时使用
 * - 每个参数的描述
 * 一个很好的经验法则是：如果一个人能理解工具的用途以及如何使用它，那么LLM也很可能理解。
 * 请注意，并非所有模型都支持工具。
 *
 * 可以通过ToolSpecification API 和@Tool注解的方式来实现Function Calling
 * 一些辅助工具类：
 * - ToolSpecifications.toolSpecificationFrom(Method)
 * - ToolSpecifications.toolSpecificationsFrom(Class)
 * - ToolSpecifications.toolSpecificationsFrom(Object)
 * 相关注解：
 *
 * @author superMan
 * @ Tool：LLM可以执行任何使用@Tool注释并在构建AI服务期间明确指定的Java方法
 * - name: 方法名称（llm识别并返回的名字）
 * - value：方法的作用描述
 * @ P：方法参数可以选择用@P注释。
 * - value：参数描述。必填字段。
 * - required：参数是否必填，默认true可选字段。
 * @ Description 可以使用@Description注释指定类和字段的描述
 * @ ToolMemoryId、@MemoryId
 * 用来在Tool中区分不同的用户
 *
 * <p></p>
 * @since fish_temp_since
 */
public class ToolDemo {
    public static void main(String[] args) {

    }
}
